iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
自我挑戰組

Practice again& again.系列 第 6

觀察 Android Activity 生命週期 (Kotlin)

  • 分享至 

  • xImage
  •  

以畫面操作搭配 Log Message 觀察 Activity 生命週期

工具:Logcat

  • 在 Android Studio 底部點選 Logcat 標籤(如下圖黃框處),即可開啟 Logcat 視窗。
    logcat

Log Message

  • 使用 android.util.Log 將 Log 訊息推送至全系統,於上述工具 Logcat 可看到 Log 訊息內容。
  • 常用 function 為 d,意義為「debug」,語法如下:
    Log.d("tag", "message")
    

MainActivity file

  • 開啟先前章節建立的App專案。
  • 開啟位於專案根目錄/app/src/main/java/專案package/MainActivity.kt的 MainActivity。
    MainActivity

以 Log Message 觀察 Activity 生命週期

  • 複製下方內容貼上至 MainActivity
    import android.os.Bundle
    import android.util.Log
    import androidx.appcompat.app.AppCompatActivity
    
    private const val TAG = "App_MainActivity" //宣告 Log 訊息標籤,用以分類篩選
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            Log.d(TAG,"onCreate(Bundle?) called")
        }
    
        override fun onStart() {
            super.onStart()
            Log.d(TAG,"onStart() called")
        }
    
        override fun onResume() {
            super.onResume()
            Log.d(TAG,"onResume() called")
        }
    
        override fun onPause() {
            super.onPause()
            Log.d(TAG,"onPause() called")
        }
    
        override fun onStop() {
            super.onStop()
            Log.d(TAG,"onStop() called")
        }
    
        override fun onDestroy() {
            super.onDestroy()
            Log.d(TAG,"onDestroy() called")
        }
    }
    
  • 啟動專案,等到虛擬裝置或實體手機出現 App 畫面後,開啟 Logcat,於搜尋欄(下圖黃框處)輸入 App_MainActivity,可篩選出我們在上方程式碼宣告的 TAG 相關訊息(下圖紅框處)。
    LogcatLog
  • 虛擬或實體手機運作對應之 Log Message(如下表):藉由觀察每個情境的生命週期,初步理解 Activity 被創建、銷毀的時機。
運作情境 Log Message 備註
Home 鍵 onPause → onStop 未發生onDestroy,Activity未被銷毀
承上,從桌面回到 App onStart → onResume 恢復Activity,無需再次onCreate
Overview 鍵 onPause → onStop 未發生onDestroy,Activity未被銷毀
承上,從 Overview 回到 App onStart → onResume 恢復Activity,無需再次onCreate
Back 鍵 onPause → onStop → onDestroy onDestroy發生,Activity被銷毀
承上,回到 App onCreate → onStart → onResume onCreate 發生,代表重新創建 Activity
旋轉螢幕 onPause → onStop → onDestroy → onCreate → onStart → onResume onDestroy發生,Activity被銷毀;旋轉方向後 onCreate 發生,重新創建 Activity

上一篇
Android Activity 生命週期
下一篇
Android UI - XML Layout
系列文
Practice again& again.30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
Jim
iT邦新手 4 級 ‧ 2023-09-23 09:44:41

用表格整理蠻清楚的,下次我也要學著這個方式來發文。

Alice iT邦新手 5 級 ‧ 2023-09-25 17:54:45 檢舉

感謝,我也覺得使用表格來整理需要分類的項目很方便!

我要留言

立即登入留言